#include <cstdio>
#include <string>
#include <cstring>
#include <queue>
#include <set>
#include <iostream>

using namespace std;

typedef struct _node {
	string func;
	int value, step;
}node;

node BFS(int n ,int m) {
	queue<node> q;
	set<int> visit;
	node j = { "" ,n,0 };
	q.push(j);
	while (!q.empty())
	{
		node k = q.front(); q.pop();
		if (visit.count(k.value) < 1)
		{
			visit.insert(k.value);
			if (k.value == m)
			{
				return k;
			}
			node f, g;
			f.func = "f" + k.func;
			f.value = k.value * 3;
			f.step = k.step + 1;
			q.push(f);
			g.func ="g" +  k.func;
			g.value = k.value / 2;
			g.step = k.step + 1;
			q.push(g);
		}
	}
	return j;
}
int main() {

	int n, m;
	scanf("%d%d", &n, &m);
	node k = BFS(n, m);
	printf("%d\n",k.step);
	cout << k.func << endl;
	getchar();
}